package com.wenjie.databseDiff.handle.DatasourceSynchronizer;

import com.wenjie.original.entity.SysDiffColumn;
import com.wenjie.original.entity.SysDiffTable;

import java.sql.Connection;
import java.sql.Driver;
import java.sql.SQLException;
import java.util.List;

/**
 * 数据源同步器
 */
public interface DatasourceSynchronizer extends AutoCloseable {
    /**
     * 注册驱动
     */
    void registerDriver() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException;

    /**
     * 卸载驱动
     *
     * @param driver 已注册的驱动
     * @throws SQLException 异常信息
     */
    void unregisterDriver(Driver driver) throws SQLException;

    /**
     * 获取表
     *
     * @param database 数据库名称
     * @return 表信息
     */
    List<SysDiffTable> getTables(String database);

    /**
     * 获取列
     *
     * @param database  数据库名称
     * @param tableName 表名称
     * @return 列信息
     */
    List<SysDiffColumn> getColumns(String database, String tableName);


    /**
     * 获取数据库的请求连接
     *
     * @return 数据库的连接对象
     * @throws SQLException
     */
    Connection getConnection() throws SQLException;


}
